支持30种语言,多种中文方言 [四川话、粤语等]的颠覆性无分词器TTS系统

567 字

支持30种语言,多种中文方言 [四川话、粤语等]的颠覆性无分词器TTS系统


项目简介

VoxCPM 是一个无离散音频分词器(Tokenizer-Free)的语音合成系统,通过端到端的扩散自回归架构直接生成连续语音表征,绕过对音频的离散编码步骤,实现高度自然且富有表现力的语音合成。

VoxCPM2 是最新的版本 — 基于 MiniCPM-4 基座构建,总计 20亿 参数,在超过 200万小时 的多语种音频数据上训练,支持 30种全球语言+9种中文方言(如下所示)、音色设计可控声音克隆,原生输出 48kHz 高质量音频。

阿拉伯语、缅甸语、中文、丹麦语、荷兰语、英语、芬兰语、法语、德语、希腊语、希伯来语、印地语、印尼语、意大利语、日语、高棉语、韩语、老挝语、马来语、挪威语、波兰语、葡萄牙语、俄语、西班牙语、斯瓦希里语、瑞典语、菲律宾语、泰语、土耳其语、越南语

中国方言:四川话、粤语、吴语、东北话、河南话、陕西话、山东话、天津话、闽南话

可看下面的视频演示,以有个直观的感受:

核心特性

  • 🌍 30种语言语音合成 — 直接输入原始文本即可合成(支持语言详见下文),无需额外语言标签
  • 🎨 音色设计 — 用自然语言描述(性别、年龄、音色、情绪、语速……)凭空创建全新音色,无需参考音频
  • 🎛️ 可控声音克隆 — 从参考音频片段克隆任意声音,可叠加风格指令控制情绪、语速和表现力,同时保持原始音色
  • 🎙️ 极致克隆 — 提供参考音频及其文本内容,模型接着参考音频进行无缝续写,从而精准还原声音细节特征(与 VoxCPM1.5 一致)
  • 🔊 48kHz 高质量音频 — 输入 16kHz 参考音频,通过 AudioVAE V2 的非对称编解码设计直接输出 48kHz 高质量音频,内置超分能力
  • 🧠 语境感知合成 — 根据文本内容自动推断合适的韵律和表现力
  • ⚡ 实时流式合成 — 在 NVIDIA RTX 4090 上 RTF 低至 ~0.3,通过 Nano-VLLM 加速后可达 ~0.13
  • 📜 完全开源,商用就绪 — 权重和代码基于 Apache-2.0 协议发布,免费商用

🚀 快速开始

安装

pip install voxcpm

环境要求: Python ≥ 3.10 (<3.13),PyTorch ≥ 2.5.0,CUDA ≥ 12.0。详见 快速开始文档。

Python API

🗣️ 文本转语音

from voxcpm import VoxCPM
import soundfile as sf

model = VoxCPM.from_pretrained(
"openbmb/VoxCPM2",
  load_denoiser=False,
)

wav = model.generate(
    text="VoxCPM2 是目前推荐使用的多语言语音合成版本。",
    cfg_value=2.0,
    inference_timesteps=10,
)
sf.write("demo.wav", wav, model.tts_model.sample_rate)
print("已保存: demo.wav")

如果你希望先从 ModelScope 下载模型到本地(适用于国内网络访问),可以使用:

pip install modelscope

from modelscope import snapshot_download
snapshot_download("OpenBMB/VoxCPM2", local_dir='./pretrained_models/VoxCPM2') # 指定模型保存的本地路径

from voxcpm import VoxCPM
import soundfile as sf
model = VoxCPM.from_pretrained('./pretrained_models/VoxCPM2', load_denoiser=False)

wav = model.generate(
    text="VoxCPM2 是目前推荐使用的多语言语音合成版本。",
    cfg_value=2.0,
    inference_timesteps=10,
)
sf.write("demo.wav", wav, model.tts_model.sample_rate)

🎨 音色设计

用自然语言描述创建全新音色,无需参考音频。格式: 在 text 开头用括号写入音色描述(如 "(音色描述)要合成的文本。"):

wav = model.generate(
    text="(年轻女性,声音温柔甜美)你好,欢迎使用VoxCPM2!",
    cfg_value=2.0,
    inference_timesteps=10,
)
sf.write("voice_design.wav", wav, model.tts_model.sample_rate)

🎛️ 可控声音克隆

上传一段参考音频,模型克隆其音色,同时可以使用控制指令调节语速、情绪或风格。

wav = model.generate(
    text="这是VoxCPM2生成的克隆语音。",
    reference_wav_path="path/to/voice.wav",
)
sf.write("clone.wav", wav, model.tts_model.sample_rate)

wav = model.generate(
    text="(稍快一点,欢快的语气)这是带风格控制的克隆语音。",
    reference_wav_path="path/to/voice.wav",
    cfg_value=2.0,
    inference_timesteps=10,
)
sf.write("controllable_clone.wav", wav, model.tts_model.sample_rate)

🎙️ 极致克隆

提供参考音频及其精确文本转录,实现基于音频续写的高保真克隆。为获得最高克隆相似度,可将同一音频同时传给 reference_wav_path 和 prompt_wav_path:

wav = model.generate(
    text="这是使用VoxCPM2的极致克隆演示。",
    prompt_wav_path="path/to/voice.wav",
    prompt_text="参考音频的文本转录。",
    reference_wav_path="path/to/voice.wav",  # 可选,提升相似度
)
sf.write("hifi_clone.wav", wav, model.tts_model.sample_rate)

🔄 流式 API**

import numpy as np

chunks = []
for chunk in model.generate_streaming(
    text="使用VoxCPM进行流式语音合成非常简单!",
):
    chunks.append(chunk)
wav = np.concatenate(chunks)
sf.write("streaming.wav", wav, model.tts_model.sample_rate)

命令行使用

音色设计(无需参考音频)

voxcpm design \
  --text "VoxCPM2带来全新语音合成体验。" \
  --output out.wav

可控声音克隆(带风格控制)

voxcpm design \
  --text "VoxCPM2带来全新语音合成体验。" \
  --control "年轻女声,温暖温柔,略带微笑" \
  --output out.wav

声音克隆(参考音频)

voxcpm clone \
  --text "这是一个声音克隆的演示。" \
  --reference-audio path/to/voice.wav \
  --output out.wav

极致克隆(提示音频 + 转录文本)

voxcpm clone \
  --text "这是一个声音克隆的演示。" \
  --prompt-audio path/to/voice.wav \
  --prompt-text "参考音频转录文本" \
  --reference-audio path/to/voice.wav \
  --output out.wav

批量处理

voxcpm batch --input examples/input.txt --output-dir outs

帮助

voxcpm --help

Web Demo

python app.py --port 8808  # 然后在浏览器打开 http://localhost:8808

🚢 生产部署(Nano-vLLM)

如需高吞吐量部署,使用 Nano-vLLM-VoxCPM — 基于 Nano-vLLM 构建的专用推理引擎,支持并发请求和异步 API。

pip install nano-vllm-voxcpm

from nanovllm_voxcpm import VoxCPM
import numpy as np, soundfile as sf

server = VoxCPM.from_pretrained(model="/path/to/VoxCPM", devices=[0])
chunks = list(server.generate(target_text="你好,我来自VoxCPM!"))
sf.write("out.wav", np.concatenate(chunks), 48000)
server.stop()

在 NVIDIA RTX 4090 上 RTF 低至 ~0.13(标准 PyTorch 实现约 ~0.3),支持批量并发请求和 FastAPI HTTP 服务。详见 Nano-vLLM-VoxCPM 仓库。

📦 模型与版本

VoxCPM2VoxCPM1.5VoxCPM-0.5B状态🟢 最新版本稳定版旧版主模型参数量2B0.6B0.5B音频采样率48kHz44.1kHz16kHzLM处理码率6.25Hz6.25Hz12.5Hz语言支持数量302(中文、英文)2(中文、英文)克隆模式隔离参考音频(无需文本) & 音频续写仅音频续写仅音频续写音色设计✅——可控声音克隆✅——SFT / LoRA✅✅✅RTF (RTX 4090)~0.30~0.15~0.17RTF Nano-VLLM (RTX 4090)~0.13~0.08~0.10显存占用~8 GB~6 GB~5 GB模型权重🤗 HF / MS🤗 HF / MS🤗 HF / MS技术报告即将发布—arXivICLR 2026Demo 页面音频示例—音频示例

VoxCPM2 采用连续音频表征、扩散自回归范式,模型在 AudioVAE 的连续隐空间中通过四阶段处理:LocEnc → TSLM → RALM → LocDiT,实现丰富的表现力语音合成和 48kHz 原生音频输出。

⚙️ 微调

VoxCPM 支持全参数微调(SFT) 和 LoRA 微调。仅需 5-10分钟 的音频数据,即可适配特定说话人、语言或领域。

LoRA 微调(参数高效,推荐)

python scripts/train_voxcpm_finetune.py \
    --config_path conf/voxcpm_v2/voxcpm_finetune_lora.yaml

全参数微调

python scripts/train_voxcpm_finetune.py \
    --config_path conf/voxcpm_v2/voxcpm_finetune_all.yaml

WebUI 训练与推理

python lora_ft_webui.py   # 然后打开 http://localhost:7860

项目地址

https://github.com/OpenBMB/VoxCPM

**
**

扫码加入技术交流群,备注「开发语言-城市-昵称

合作请注明

image

如果你觉得这篇文章不错,别忘了点赞、在看、转发给更多需要的小伙伴哦!我们下期再见!